/*
 * @description:
 * @Author: jhw
 * @Date: 2025-06-30 10:33:57
 * @LastEditors: jhw
 * @LastEditTime: 2025-06-30 15:47:47
 */
import handles from "./handles/index.js";
import { isObject } from "./utils.js";

const proxyMap = new WeakMap();
/**
 *
 * @param {*} target 原始对象
 */
export function reactive(target) {
  // 在转换之前，需要做一些判断，如果 target 不是对象，直接返回
  if (!isObject(target)) {
    return target;
  }

  // 如果 target 已经是一个代理对象，直接返回
  if (proxyMap.has(target)) {
    return proxyMap.get(target);
  }

  const proxy = new Proxy(target, handles);

  // 将代理对象存储到 WeakMap 中，避免重复转换
  proxyMap.set(target, proxy);
  return proxy;
}
